package com.wwj.my_ummary.util.express;


import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

/**
 * @author admin007
 */

public class ExpressUtil {

    @Resource
    private  RestTemplate restTemplate;



    /**
     *
     * @param mobile 可选	顺丰需填写收件人/寄件人手机号（后4位即可）
     * @param number 必选	快递、物流单号
     * @return  express 用于返回物流信息
     */
    public static String getExpress(String mobile, String number) {
        /**
         * 用于返回物流信息
         */
        String express = null;

        /**
         * AppKey：203880041
         * AppSecret：G0TlzWt7m9tgIh8Ywgtahczy2AJm87HT
         * AppCode：08e519a3adf04dc1a70e38ffce629a3c
         */
        String host = "https://qyexpress.market.alicloudapi.com";
        String path = "/composite/queryexpress";
        String method = "GET";

        String appcode = "08e519a3adf04dc1a70e38ffce629a3c";


        Map<String, String> headers = new HashMap<>();
        //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
        headers.put("Authorization", "APPCODE " + appcode);
        Map<String, String> querys = new HashMap<>();


        if (number!=null && !Objects.equals(number, "")){

            /**
             * mobile	String	可选	顺丰需填写收件人/寄件人手机号（后4位即可）
             * number	String	必选	快递、物流单号
             */
            querys.put("mobile", mobile);
            querys.put("number", number);


            try {
                /**
                 * 重要提示如下:
                 * HttpUtils请从
                 * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/src/main/java/com/aliyun/api/gateway/demo/util/HttpUtils.java
                 * 下载
                 *
                 * 相应的依赖请参照
                 * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/pom.xml
                 */
                HttpResponse response = HttpUtils.doGet(host, path, method, headers, querys);
                //System.out.println(response.toString());
                // 获取response的body
                express = EntityUtils.toString(response.getEntity());
                //System.out.println(EntityUtils.toString(response.getEntity()));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }else {
            express=null;
        }

        return express;
    }

    public static String getRespMsg(Integer respCode){

        String RespMsg = null;

        if (respCode==0){
            RespMsg = "ok";
        }else if (respCode==201){
            RespMsg = "快递单号为空，请联系客服处理后，五分钟后再试";
        }else if (respCode==202){
            RespMsg = "快递公司为空，请联系客服处理，五分钟后再试";
        }else if (respCode==203){
            RespMsg = "快递公司不存在，请联系客服处理，五分钟后再试";
        }else if (respCode==204){
            RespMsg = "快递公司识别失败，请联系客服处理，五分钟后再试";
        }else if (respCode==205){
            RespMsg = "没有信息，请联系客服处理，五分钟后再试";
        }else if (respCode==206){
            RespMsg = "快递单号错误，请联系客服处理，五分钟后再试";
        }else if (respCode==207){
            RespMsg = "快递单号错误次数过多，请联系客服处理，五分钟后再试";
        }else if (respCode==208	){
            RespMsg = "单号没有信息，请联系客服处理，五分钟后再试";
        }else if (respCode==220	){
            RespMsg = "需要收件人/寄件人手机号（顺丰），请联系客服处理，五分钟后再试";
        }

        return RespMsg;
    }




/*
    /**
     * 快递100物流公司名称转物流公司代码接口
     * 通用参数说明：$type是快递公司名称    $webname是请求接口网站名称    $sta接口返回状态码    $rs接口返回说明    $code 接口返回快递代码
     * 快递100物流公司名称转物流公司代码接口       测试
     * 说明：?type=顺丰&webname=网站1
     * 参数说明：$type是快递公司名称 传入的字符串中包括 “顺丰” 就可以转化为快递码    $webname是请求接口网站名称
     *
     * @param mobile
     * @return
     * /
    public static String getMobile(String mobile){

        System.out.println(mobile);

        if (mobile!=null&& !Objects.equals(mobile, "")){
            String forObject = restTemplate.getForObject("http://kuaidi100.wlphp.com/api.php?type=" +mobile, String.class);

            JSON parse = JSONUtil.parse(forObject);
            mobile = (String) parse.getByPath("code");
        }else {
            mobile=null;
        }

        return mobile;
    }
*/

}
